1. Field of the Invention
This invention concerns a computer communication method using asynchronous messages in distributed software architecture, for example of type AAA-MOM (Agent Anytime Anywhere—Message Oriented Middleware), including a disconnectable platform such as a smartcard.
2. Description of the Related Art and Summary of the Invention
The applications or information systems which may need to use one or more computer networks of digital data processing stations represent a major part of the current and future computer developments. These systems may play an important role in applications such as the management of data shared by several people or groups of people. In addition, such applications may need to manage data, stored in platforms located in different places and which may vary depending on the times.
The development of such applications using networks is more and more frequently based on software or computer programs using distributed architecture, i.e. where various software components are run on different data processing stations or platforms. These components may also be located on different platforms depending on the times. Such data processing stations are connected by a combination of computer communication networks whose hardware and software architectures may be heterogeneous, each forming a node of a network which may take numerous forms and cover more or less extensive areas, for example from the simple local configuration with a few stations up to a global network such as the Internet.
In the remainder of this description, the term “node” refers to the various stations or hardware platforms of such a network and the term “network” to the set of these nodes and the physical and software architectures providing communication between them.
A distributed architecture application may therefore include a set of agents (reactive software components) operating together and interacting. These agents may exist on one or more different nodes of the network at the same time, or even use different nodes at different times. This type of application offers various advantages, for example not depend on a single node whether regarding its existence or its performance.
To develop and produce this type of distributed application, the communication between the various agents may be managed at each node by a software layer, called middleware, in between the operating system of the platform forming the node and the applications or agents operating on this platform. Amongst the various types of middleware, there is a software infrastructure commonly called MOM (Message Oriented Middleware), which uses asynchronous messages as the basis of all the communication, coordination and synchronisation structures of its various components or agents. These messages are qualified as asynchronous since they can be sent and received regardless of the availability of their respective recipient and sender. Generally, such messages contain, in addition to the information to be transmitted, one or more codes identifying the message sender and recipient, and possibly additional information or markers used and modifiable by the various agents involved in their transmission.
The advantage with this type of communication infrastructure is that it provides, in many high-level programming languages, especially object-oriented languages such as Java®, reliable and user-friendly tools for communication between the agents. Use of the tools supplied in this type of software infrastructure is in fact independent of the actual communication modes implemented in the network.
One of the MOMs is the architecture known as AAA or A3 (Agent Anytime Anywhere), used for example by the NETWALL® software, described in particular in the paper with the following reference:
“An Agent Platform for Reliable Asynchronous Distributed Programming”,
L. Bellissard, N. De Palma, A. Freyssinet, M. Herrmann, S. Lacourte, Symposium on Reliable Distributed Systems (SRDS'99) (short paper), Lausanne—Switzerland, 20-22 Oct. 1999
This AAA architecture is based on a MOM type communication software infrastructure, which manages these asynchronous messages and includes for example “Agents” and “Agent Servers”. An agent can be defined as a unitary reactive software component, which reacts according to specific events. An agent server includes a software program running on a platform and managing a certain number of agents, which may include an engine that executes the software operations forming the reactions of the agent it manages.
Whenever at least one application executed in this architecture needs to operate for a given period, or even permanently, the AAA architecture itself and a certain number of its AAA agents must operate and be accessible during at least this period, which will be defined by the fact that an agent is “persistent”.
Consequently, any failure in part of the network or its nodes could result in the disappearance or unavailability for the rest of the network of an agent on this part of the network, or of messages transiting in this part of the network between several agents, and result in malfunctions in the applications using this architecture.
To ensure that this type of architecture operates correctly, the network and its nodes include various mechanisms and methods, automatic or not, used to restore the integrity of any software element in the AAA architecture which should be damaged or lost.
With the development of embedded computing and the multiplication of portable objects capable of data processing, such as integrated circuit cards or smartcards, such objects are now frequently connected as nodes in a network supporting one or more, simple or distributed, applications.
Typically, this type of object can be repeatedly disconnected from the network at any time, remain disconnected from the network a certain amount of time, then possibly be reconnected at another unpredictable place on the network. With the current technology, such unpredictable absence of certain components of AAA architecture is not managed by the various mechanisms and communication protocols operating such a network.
In order to use the development facilities provided by AAA architecture for distributed applications including the use of such portable objects, especially the transparency of the communication modes with respect to high level languages, it would be useful to have, for the features of this architecture, an implementation suitable for such objects and therefore managing such specificities.
One objective of the invention is to provide a method allowing the transmission of any asynchronous message between an agent stored in a portable and disconnectable object and another agent stored in the network, transparently for the network.
This objective is reached using a computer communication method by asynchronous messages between firstly at least any one software agent, known as the card agent, stored in a portable data processing station, known as removable platform, which can be connected or disconnected by communication means with at least a data processing station, known as terminal, at any time and independently of the operating status of this terminal or the removable platform, and secondly at least any one software agent, known as standard agent, this standard agent being either stored in storage means of a computer network connected to this terminal and including one or more data processing stations storing one or more software agents communicating together via a distributed software infrastructure for computer communication by asynchronous messages, either stored in this removable platform or in another similar platform, characterised in that it comprises a step to store a message sent by the card agent to at least a standard agent or sent by a standard agent to the card agent, in storage means of the network, by at least an intermediate agent managing the communications of this card agent with the network.
According to one characteristic, the method comprises the following steps:                transmission to the network by this card agent of a message or message indicator intended for a standard agent;        transmission of a message or message indicator intended for this standard agent, from this card agent to an agent known as card engine proxy agent, stored in storage means of the network;        storage of said message or message indicator in storage means of the network by the card engine proxy agent;        transmission via the network of said message or message indicator by the card engine proxy agent;        
According to one characteristic, the method comprises the following steps:                reception via the network of a message or message indicator intended for this card agent, by an agent known as card engine proxy agent, stored in storage means of the network;        storage in storage means of the network of said message or message indicator by the card engine proxy agent;        transmission of said message or message indicator by the card engine proxy agent to at least one card agent stored in the removable platform;        storage of said message or message indicator in storage means of the removable platform;        
According to one characteristic, the messages transmitted between the card agent and the card engine proxy agent, or vice versa, transit via a card engine agent, stored in storage means of the removable platform, designed to manage or control this card agent.
According to one characteristic, the method also comprises the following steps:                storage of said message or message indicator in storage means of the network by a card agent proxy agent, stored in the network and indicating the identity of the recipient card agent;        transmission of a message or message indicator intended for the card agent from the card agent proxy to the card engine proxy agent corresponding to the recipient card agent        
According to one characteristic, the message exchanges between the card engine proxy agent and the card engine agent are carried out according to a “first in first out” type scheduling system.
According to one characteristic, the message exchanges between the card engine proxy agent and the card engine agent use at least one transmission method with acknowledgement of receipt so that the sender of a message or message indicator can obtain confirmation, by the recipient of this same message, of its correct reception and so that the messages not received by the recipient can be transmitted again.
According to one characteristic, the card engine agent or the card engine proxy agent sends one or more messages or message indicators to a given recipient agent implementing a method known as acknowledgement of receipt buffer method, comprising the following steps:                storage in an acknowledgement of receipt buffer, by the sender of one or more messages or message indicators to be sent, these messages or indicators being sorted in the order in which they must be sent and associated with “index” identifiers;        transmission, from the sender to the recipient, of at least one message or message indicator together with “marking” data representing the index of this message;        
According to one characteristic, said acknowledgement of receipt buffer method also comprises the following steps:                reception by the recipient, of at least one message or message indicator together with “marking” data representing the index of this message;        transmission from the recipient to the sender of “index” data of the last message received by the recipient including or representing the value of the index represented by the marking which accompanied the last message or indicator received from this sender;        reception of this index of the last message received by the sender and comparison of this index with the indices of the messages or indicators stored in its acknowledgement of receipt buffer;        further transmission, by the sender to the recipient, of messages or indicators stored after the message whose index corresponds to the index of the last message received by the recipient in its acknowledgement of receipt buffer,        
According to one characteristic, a further transmission, by said acknowledgement of receipt buffer method, of the messages stored by the sender in its acknowledgement of receipt buffer and not yet received by the recipient, is carried out in the order that these messages were stored in this acknowledgement of receipt buffer.
According to one characteristic, said acknowledgement of receipt buffer method also comprises a step in which the recipient stores, as index of the last message received by the network or index of the last message received by the card, data including or representing the index of the location where this message is stored in the sender's acknowledgement of receipt buffer.
According to one characteristic, the acknowledgement of receipt buffer method also comprises at least one step in which the recipient of the message or indicator checks the integrity of the content of this message or indicator, the index of the last message received by the recipient then being determined as being the index represented by the marking accompanying the last message received whose integrity meets specific conditions.
According to one characteristic, the card engine proxy agent sends to the card engine agent one or more messages or indicators received from the network, implementing a method known as buffer flow control method, comprising the following steps:                storage in a flow control buffer located in storage means of the network of one or more messages or indicators received, these messages or indicators being sorted according to their order of reception;        verification of the acknowledgement of receipt buffer operation;        transmission of said messages or indicators, in the order that they were received, according to said acknowledgement of receipt buffer method.        
One objective of the invention is to propose a method to update the agents stored in a portable and disconnectable object, regarding the messages exchanged with another agent stored in the network, following a period during which this object is disconnected, to provide continuous operation of the applications using this object.
This objective is reached by a method as described above, characterised in that the communication means of the terminal are managed by at least one terminal communication agent stored in storage means of the terminal or the network, transition of the removable platform status from connected to disconnected triggering the following steps:                detection by the terminal communication agent of disconnection of the removable platform;        transmission of a disconnection notification message from the terminal communication agent to the card engine proxy agent;        storage in the storage means of the network by the card engine proxy agent of the removable platform disconnected status.        
According to one characteristic, said buffer flow control method also includes a step in which the card engine proxy agent obtains the connection or accessibility status of the removable platform from the network.
According to one characteristic, communication of the terminal with the removable platform is managed by at least one terminal communication agent stored in storage means of the terminal or the network, transition of this removable platform status from disconnected to connected, combined or not with another event, triggering the following steps:                detection of this connection by the terminal communication agent;        obtention by the terminal communication agent of data representing a code identifying a card agent or a card engine agent, stored in the storage means of the removable platform;        transmission of an insertion notification message, from the terminal communication agent to the card engine proxy agent, including or representing the code of the card engine agent or the card agent.        
According to one characteristic, a card engine proxy agent stored in the network and a card engine agent stored in the removable platform exchange one or more messages or message indicators according to said acknowledgement of receipt buffer method, transition of the removable platform status from disconnected to connected, combined or not with another event, triggering an update method including the following steps:                transmission, from the terminal communication agent or the card engine agent to the card engine proxy agent of the index of the last message received by the card stored by this card engine agent;        transmission, from the card engine proxy agent to the card engine agent of messages or indicators stored in its acknowledgement of receipt buffer as being intended for this card engine agent, and not yet received by it.        
According to one characteristic, a card engine proxy agent stored in the network and a card engine agent stored in the removable platform exchange one or more messages or message indicators according to said acknowledgement of receipt buffer method, transition of the removable platform status from disconnected to connected, combined or not with another event, triggering an update method including the following steps:                transmission, from the card engine proxy agent to the card engine agent of the transmission index of the last message received by the network stored by this card engine proxy agent;        transmission, from the card engine agent to the card engine proxy agent of messages or indicators stored in its acknowledgement of receipt buffer as being intended for this card engine proxy agent, and not yet received by it.        
According to one characteristic, the method comprises:                a serialisation step comprising a conversion of software objects to be sent by agent from a communication terminal to a removable platform or vice versa, this conversion being carried out from the structured form of these software objects in the agent which wants to send them, to the less structured data form in which they can be sent between a communication terminal and the communication means of a removable platform or vice versa.        a deserialisation step performing the reverse conversion once this transmission has been carried out.        
According to one characteristic, at least one card engine proxy agent manages the communications with the network of several card engine agents, this card engine proxy agent storing, in the network, data representing an identification code, a platform accessibility or inaccessibility status, an index of the last message received by the network, and the content of the messages sent without acknowledgement of receipt, for each of the card engine agents that it manages.
According to one characteristic, at least one agent communicates via the network using an AAA or compatible software communication infrastructure.
According to one characteristic, at least one of said agents participates in at least one application programmed in language Java®.
One objective of the invention is to provide a system allowing the communication by asynchronous messages between an agent stored in a portable and disconnectable object and another agent stored in the network, transparently for the network.
This objective is reached by a communication system by asynchronous messages between firstly a computer network comprising one or more data processing stations storing one or more software agents communicating together via a distributed software infrastructure for computer communication by asynchronous messages, and secondly at least one portable object comprising at least one processor, storage means and means of communication with at least one terminal connected to the network, characterised in that this portable object comprises at least one software agent, known as card agent, communicating by message or message indicator with at least any one software agent, known as standard agent, this standard agent being either stored in storage means of a computer network or stored in this removable platform or in another similar platform, this computer network, this communication being carried out via at least one intermediate agent stored in the storage means of the network and managing the communications of the card agent with the network.
One objective of the invention is to propose a system to update the agents stored in a portable and disconnectable object, regarding the messages exchanged with another agent stored in the network, following a period during which this object is disconnected, to provide continuous operation of the applications using this object.
According to one characteristic, the system comprises at least one software agent, known as terminal communication agent, stored in the storage means of the terminal or the network, designed to manage the communication between the terminal and the removable platform, this terminal communication agent and to send the connection or disconnection notifications of the removable platform.
According to one characteristic, the removable platform comprises at least one software agent, known as card engine agent, designed to manage or control the operation of at least one card agent, the card engine proxy agent then managing the communications of this card engine agent with the network.
According to one characteristic, the system comprises at least one software agent, known as card agent proxy agent, stored in the storage means of the network, designed to indicate the identity of at least one card agent and receive from the network the messages addressed to it.
According to one characteristic, the network, or the removable platform, or both, comprise a memory structure, known as acknowledgement of receipt buffer, designed to index and store the messages sent from the network to the removable platform or vice versa, and send them again to their recipients when they were not correctly received.
According to one characteristic, the network comprises a memory structure, known as flow control buffer, designed to store the messages received by the card engine proxy agent for a card agent, then to present these messages to the acknowledgement of receipt buffer for transmission to the removable platform when the removable platform is accessible or when the acknowledgement of receipt buffer is not full.
According to one characteristic, the acknowledgement of receipt buffer and the control buffer extract the messages they store in the order that they were stored.
According to one characteristic, the card engine proxy agent and the card engine agent include a serialisation function and a deserialisation function, carrying out in one direction and respectively in the opposite direction, the conversion or translation of at least one message to be transmitted via the terminal between the structure they present when they are received and a structure compatible with the terminal and the communication means of the removable platform.
According to one characteristic, the communication between the terminal and the communication means of the removable platform is carried out by transmission of data in APDU format according to standard ISO 7816.
According to one characteristic, at least two stations forming the network communicate together using a software infrastructure of type AAA-MOM.
According to one characteristic, the system includes at least one of said agents programmed in the language Java®.